<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var arr1 = [1,2,3,4];
        var arr2 = new Array('a','b','c');

        arr1.push(5);
        arr2.push('d');

        console.log(arr1.push === arr2.push);// true 说明每一个数组的实例对象，都可以使用同一个push方法。

        console.log(arr1.__proto__ === Array.prototype); // true
        console.log(Array.prototype);// 数组的方法都定义在数组构造函数的原型对象上

        var str1 = 'abc';
        var str2 = '123';
        // 所有的基础数据类型的数据，都有一个包装对象 
        // 字符串的包装对象 String
        var str3 = new String('abc123');
        console.log('str3: ', str3);

        str1.split(''); // ==》 new String('abc').split('')   ==> String.prototype.split
        str2.split('')
        console.log(str1.split === str2.split);

        // 布尔值的包装对象 Boolean
        var b1 = true;
        var b2 = new Boolean(false);
        console.log(b1, b2);
        // 数字的包装对象 Number
        var num1 = 1;
        var num2 = new Number(2);
        console.log(num1, num2);
        
    </script>
</body>
</html>